package com.smrtcold.dev.dto.dev.task;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.smrtcold.dev.utils.CronUtils;
import com.smrtcold.dev.utils.Utils;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;

import java.util.Date;
import java.util.List;

@Getter
@Setter
public class DevTask {
    private Long id;
    @NonNull
    private Long mid;
    @NonNull
    private String name;

    private String cron;
    @NonNull
    private String action;
    //重试
    private Integer retry;

    private Boolean status;
    private Long createuid;
    private String remarks;
    private String group = "devTask";
    //"并发执行--> 0=允许,1=禁止"
    @NonNull
    private Integer concurrent;//  标准： 功能，并发执行，
    @NonNull
    private Integer istiming;// 标准任务： 0 手动  1 定时

    //"计划策略 :-> 0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行"
    @NonNull
    private String misfirepolicy;//执行策略 立即执行 执行一次，放弃执行

    private String createtime;
    private String updatetime;
    private String executetime;//执行时间
    private Boolean executestatus;//执行状态
    //拓展字段
    private String createname,content,oper;
    //-------------------------------------以下为本地任务字段----------
    // apid,devids,参数，重置参数，平谷峰对应时段
    private String  apid,devids,parameters,resetparam,periodtime;
    //离线运行 ，电价策略,重置参数
    private Boolean offlinerun,pwcstategy,reset;
    //可执行的时间段
    private List<String> runtime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getNextValidTime() {
        if (Utils.isnotNull(cron)) {
            return CronUtils.getNextExecution(cron);
        }
        return null;
    }

}
